package org.example.controller;

import org.example.pojo.User;
import org.example.service.UserService;
import org.example.utils.JwtHelper;
import org.example.utils.Result;
import org.example.utils.ResultCodeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("user")
@CrossOrigin
public class UserController {

    @Autowired
    private JwtHelper jwtHelper;

    @Autowired
    private UserService userService;

    /**
     * 用户登录
     *
     * @param user 包含用户名和密码的用户对象
     * @return 登录结果（包含token或错误信息）
     */
    @PostMapping("login")
    public Result login(@RequestBody User user) {
        Result result = userService.login(user);
        return result;
    }

    /**
     * 获取用户信息
     *
     * @param token 用户认证令牌
     * @return 用户信息结果
     */
    @GetMapping("getUserInfo")
    public Result getUserInfo(@RequestHeader String token) {
        Result result = userService.getUserInfo(token);
        return result;
    }


    /**
     * 检查用户名是否已存在
     *
     * @param username 要检查的用户名
     * @return 检查结果（是否可用）
     */
    @PostMapping("checkUserName")
    public Result checkUserName(String username) {
        Result result = userService.checkUserName(username);
        return result;
    }


    /**
     * 用户注册
     *
     * @param user 包含注册信息的用户对象
     * @return 注册结果
     */
    @PostMapping("regist")
    public Result regist(@RequestBody User user) {
        Result result = userService.regist(user);
        return result;
    }


    /**
     * 检查登录状态
     *
     * @param token 用户认证令牌
     * @return 登录状态检查结果
     */
    @GetMapping("checkLogin")
    public Result checkLogin(@RequestHeader String token) {

        boolean expiration = jwtHelper.isExpiration(token);

        if (expiration) {
            //已经过期了
            return Result.build(null, ResultCodeEnum.NOTLOGIN);
        }
        return Result.ok(null);
    }


}